Enterprise Version
very elaborate